/* 
 * File:   Server_thread_crear_partida.cpp
 * Author: jaschu
 * 
 * Created on 30 de mayo de 2014, 18:13
 */

#include <vector>
#include "server_thread_crear_partida.h"
#include "server_thread_partida.h"
#include "../Modelo/Partida.h"

Server_thread_crear_partida::Server_thread_crear_partida(){
}

Server_thread_crear_partida::Server_thread_crear_partida(const Server_thread_crear_partida& orig){
}

Server_thread_crear_partida::~Server_thread_crear_partida(){
}

void Server_thread_crear_partida::serverDejoDeCorrer(){
    *serverCorre = false;
}

void Server_thread_crear_partida::ejecutar(){
    while(*serverCorre){
        if ((*partidasPendientes).size() > 0){
           for(unsigned int i = 0; i < (*partidasPendientes).size(); i++){
               if ((*partidasPendientes)[i]->estaListaParaComenzar()){
                   //creo hilo de nueva partida y lo agrego a la lista.
                   Server_thread_partida* threadPartida = new Server_thread_partida();
                   lista_threads.push_back(threadPartida);
                   threadPartida->setFlagCorrer(serverCorre);
                   //le asigno la partida al hilo.
                   threadPartida->setPartida((*partidasPendientes)[i]);                   
                   //lanzo el hilo de nueva partida
                   threadPartida->iniciar();
                   //elimino partida de la lista.
                   lista_threads.erase(lista_threads.begin()+i);
               }
           }
        }
    }
}


void Server_thread_crear_partida::setPartidasPendientes(vector<Partida*> *pendientes){
    partidasPendientes = pendientes;
}


void Server_thread_crear_partida::setFlagCorrer(bool* correr){
    serverCorre = correr;
}

